// 返回数据
let result = {
	// 下载进度
	progress: 0,
	// 已经下载的数据长度
	totalBytesWritten: 0,
	// 预期需要下载的数据总长度
	totalBytesExpectedToWrite: 0
}
// 下载安装包以及安装
const DownloadAndInstall = (updataArr)=>{
    let self = this;
	if(updataArr.update_type == 'link'){
		// 未配置链接时
		if(!updataArr.link){console.log(' 升级方式缺省，检查后台是否配置 '); return;}
		plus.runtime.openURL(updataArr.link);
	}else{
		// 下载安装包
		var downloadTask = uni.downloadFile({
			url: 'http://www.yadle.cn/app_download/down/Android.apk',//updataArr.filename,  
			success: (downloadResult) => {
				// 下载成功
				if (downloadResult.code === 200) {
					// 准备安装
					plus.runtime.install(downloadResult.tempFilePath, {  
						force: false  
					}, function() {
					    self.toast('更新成功,请重启应用！');
						// 退出应用（注：苹果无效，只能提示用户手动重启）
						setTimeout(()=>{ plus.runtime.quit(); },1500)
					}, function(e) {
					    self.toast('更新失败');
					});
				}else{
				    self.toast('安装包下载失败');
				}
			}
		});
		downloadTask.onProgressUpdate((res) => {
			result.progress = res.progress;
		    //console.log('下载进度' + res.progress);
			result.totalBytesWritten = res.totalBytesWritten;
		    //console.log('已经下载的数据长度' + res.totalBytesWritten);
			result.totalBytesExpectedToWrite = res.totalBytesExpectedToWrite;
		    //console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
			uni.$emit('progress',result);
		});
	}
}

// 检查版本信息
const checkVersion = function(updataArr){
    let self = this;
	// #ifdef APP-PLUS
	if( !updataArr ){ console.log( '升级参数缺省' ); return ; }
	plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
		// App当前版本号
		let appVersion = wgtinfo.version;
		// 参数检查
		if (!updataArr.version){ console.log('版本号缺省，检查后台是否配置'); return ; }
		// php后台设置的版本号
		let phpVersion = updataArr.version;
		// 对比版本信息是否符合升级版本要求
		if(phpVersion <= appVersion){ /* self.toast('已是最新版本'); */ return ; }
		// 符合升级要求
		else{
			// 后台设置的升级方式: update_type => all全包、wgt增量包、link下载链接
			// 强制升级（0不强制，1强制），默认不强制
			if(updataArr.forced_update == 1){
				// 弹出提示升级单向选择框，直接执行升级，或者跳转升级地址链接
				uni.showModal({title: '发现新的版本', content: '最新版本：'+ phpVersion, showCancel: false, confirmText: '立即更新',
					success(res) {
						if(res.confirm){
							DownloadAndInstall(updataArr);
							// 通过 id 获取 nvue 子窗体  
							const subNVue = uni.getSubNVueById('progress')  
							// 打开 nvue 子窗体  
							subNVue.show('slide-in-left', 300, function(){
                                //self.toast('开始下载最新安装包');
							});
							subNVue.addEventListener('hide',function(){
                                self.toast('已切换为后台下载');
							})
						}
					}
				});
			}else{
				// 弹出提示升级双向选择框
				uni.showModal({title: '发现新的版本', content: '最新版本：'+ phpVersion, cancelText: '稍后更新', confirmText: '立即更新',
					success(res) {
						if(res.confirm){
							DownloadAndInstall(updataArr);
							// 通过 id 获取 nvue 子窗体
							const subNVue = uni.getSubNVueById('progress')  
							// 打开 nvue 子窗体  
							subNVue.show('slide-in-left', 300, function(){
                                self.toast('开始下载最新安装包');
							});
							subNVue.addEventListener('hide',function(){
                                self.toast('已切换为后台下载');
							})
						}
					}
				});
			}
		}
	});  
	// #endif  
}

// 版本升级=>更新数据
const updata = (apiRoot)=>{
	// 设备类型：android、ios
	let deviceType = uni.getSystemInfoSync().platform;
	// 通过设备类型获取后台设置数据
	uni.request({
		url: apiRoot + 'config/getVersion',
		data:{
			deviceType:deviceType
		},
		success(res) {
			checkVersion(res.data);
		},
		fail(err) {
			console.log('后台版本数据请求错误，检查是否配置');
		}
	})
}

export default {
	updata,
	result
}